package lelouet.datacenter.simulation;

/** the physical requirements of a VM */
public interface PhysicalRequirements {

	/**
	 * @return the maximum number of MIPS this VM can use for its work at the
	 *         next slot time.<br />
	 *         this can be the max MIPS the VM is allowed to use, or the current
	 *         use observed by the hypervisor<br />
	 */
	public long getMaxCPU();

	/**
	 * @return the size of the memory this uses on a {@link Hypervisor}.<br />
	 *         That is, this cannot event be in the RAM of an {@link Hypervisor}
	 *         that has not this value of memory to allocate.
	 */
	public long getMemUsed();

	/**
	 * @return the memory in Mo this VM needs to work. That means that the VM
	 *         should be paused until being allocated that quantity of memory
	 */
	public long getMemNeeds();

}
